<?php
	try {
	    require_once '../../controller/controller.inc.php';
	    
	    if ($pfcid != PerfilComportamental::Orgao
		    AND $pfcid != PerfilComportamental::NucleoGestor) {
		    $usuario->redirectUnauthorized();        
	    }
		
		if (!isset($_GET['vagaid']))
		{
		    header('location: index.php');
		    throw new Exception();
		}
		
	    $vaga = new Vaga($_GET['vagaid']);
	    $candidatoVaga = $vaga->getCandidatoVagaAtivo();
	    $candidato = $candidatoVaga->getCandidato();
	    $contrato = $vaga->getContrato();
	    $lotacao = $vaga->getLotacao();
	    
	    if (isset ($_POST["btnAcao"])) {
	    	switch($_POST["btnAcao"]) {
	    	    
                case 'Alterar Lotação':
                    if ($pfcid != PerfilComportamental::Orgao) {
	    	            throw new Exception('Somente o Órgão do contrato pode alterar a 
	    	            	lotação da vaga.');
	    	        }
                    
	    	        $lotacaoid = $_POST['lotacaoid'];
	    	        
	    	        // Altera a Lotação
	                if ($lotacaoid != $vaga->lotacaoid) {
	                    
	                    // Insere a lotação no contrato
	                    if (!$contrato->hasLotacao($lotacaoid)) {
	                        $lotacaoContrato = new LotacaoContrato();
	                        $lotacaoContrato->lotacaoid = $lotacaoid;
	                        $lotacaoContrato->contratoid = $vaga->contratoid;
	                        $lotacaoContrato->salvar();
	                    }
	                    
	                    $vaga->lotacaoid = $lotacaoid;
	                    $vaga->salvar();
	                }
    	                
	    	        break;
	    	        
	            case "Salvar":
	    	        if ($pfcid != PerfilComportamental::NucleoGestor) {
	    	            throw new Exception('Somente o Núcleo Gestor da lotação pode alterar/inserir 
	    	            	um canddiato na vaga.');
	    	        }
	                
	                $cpf                  = (isset($_POST['cpf'])) ? $_POST['cpf'] : $candidato->cpf;
	            	$nome                 = $_POST['nome'];
	            	$telefone             = $_POST['telefone'];
	            	$telefone2            = $_POST['telefone2'];
	            	$admissao             = $_POST['admissao'];
	            	$nascimento           = $_POST['nascimento'];
	            	$rg                   = $_POST['rg'];
	            	$registroTerceirizada = $_POST['registroterceirizada'];
	            	
	            	$isInsercaoCandidato  = ($candidato->candidatoid 
	            	                            OR $candidato->cpf != $cpf) ? TRUE : FALSE;
	            	
	            	try {
	            	    pg_query(conexao::Conectar(), 'begin');
	            	    
	            	    // Se o candidato foi informado
    	                if ($cpf) {
    	                    // Validações
    	                    if (!$contrato->podeMovimentarCandidatos()) {
    	                        throw new Exception('Não será possível realizar esta operação neste momento, 
    	                        	pois o contrato não está apto a movimentar/adicionar candidatos.');
    	                    }
    	                    
    	                    $camposVazios = array();
    	                    
    	                    if (!$nome) {
    	                        $camposVazios[] = 'Nome';
    	                    }
    	                    if (!$telefone) {
    	                        $camposVazios[] = 'Telefone';
    	                    }
    	                    if (!$admissao) {
    	                        $camposVazios[] = 'Data de Admissão';
    	                    }
    	                    if (!$nascimento) {
    	                        $camposVazios[] = 'Data de Nascimento';
    	                    }
    	                    if (!$rg) {
    	                        $camposVazios[] = 'RG';
    	                    }
    	                    if (!$registroTerceirizada) {
    	                        $camposVazios[] = 'Matrícula';
    	                    }
    	                    
    	                    if (count($camposVazios) >1 ) {
    	                        
    	                        $stringErro = '';
    	                        foreach ($camposVazios as $campo) {
    	                            $stringErro .= ', <b>' . $campo . '</b>';
    	                        }
    	                        $stringErro = substr($stringErro, 1);
    	                        
    	                        throw new Exception('Por favor, preencha também o(s) campo(s): ' . 
    	                            $stringErro . '.');
    	                    }
    	                    
    	                    if (!$candidatoVaga->verificarRegistroTerceirizada($vaga->vagaid, $registroTerceirizada, $candidato->candidatoid)) {
    	                        throw new Exception('Por favor, informe outra matrícula, pois o número ' . 
    	                            $registroTerceirizada . ' já está sendo utilizado.');
    	                    }
    	                    
    	                    // Verifica se o candidato foi alterado
    	                    if ($isInsercaoCandidato) {
    	                        $candidato->cpf = $cpf;
    	                        $candidato->deficiente = FALSE;
    	                    }
    	                    $candidato->nome = $nome;
    	                    $candidato->contato = $telefone;
    	                    $candidato->telefone2 = $telefone2;
    	                    $candidato->nascimento = $nascimento;
    	                    $candidato->rg = $rg;
    	                    $candidato->salvar();
    	                    
    	                    if ($isInsercaoCandidato) {
    	                        $candidatoVaga = new CandidatoVaga();
    	                        $candidatoVaga->vagaid = $vaga->vagaid;
    	                        $candidatoVaga->candidatoid = $candidato->candidatoid;
    	                        $candidatoVaga->ativo = TRUE;
    	                    }
    	                    
    	                    // Altera o CandidatoVaga
    	                    $candidatoVaga->admissao = TUtils::DataPtEn($admissao);
    	                    $candidatoVaga->registroterceirizada = $registroTerceirizada;
    	                    $candidatoVaga->salvar();
    	                    
    	                    if ($isInsercaoCandidato) {
    	                        $candidatoVaga->inserirHistorico(Status::Candidato_ContratacaoFinalizada);
    	                    }
    	                    
    	                    // Ocupa a Vaga
    	                    $vaga->statusid = Status::Vaga_Ocupada;
    	                    $vaga->ativa = TRUE;
    	                    $vaga->salvar();
    	                }
    	                
    	                header('Location: vaga.php?message=alteracao&vagaid=' . $vaga->vagaid);
    	                
    	                pg_query(conexao::Conectar(), 'commit');
	            	}
	            	catch (Exception $e) {
	            	    pg_query(conexao::Conectar(), 'rollback');
	            	    throw new Exception($e->getMessage());
	            	}
	                
	                break;
	            case "Excluir":
	                header('Location: index.php?method=excluir&id=' . $vaga->vagaid);
	                break;
	        }
	    }
	} 
	catch(exception $e){
		$erro = $e->getMessage();
	}
?>